# -*- coding: utf-8 -*-
import mod.client.extraClientApi as clientApi
from mod.client.ui.controls.baseUIControl import BaseUIControl
from mod.client.ui.controls.imageUIControl import ImageUIControl
from mod.client.ui.controls.textEditBoxUIControl import TextEditBoxUIControl
from legendaryPowerClientScript.ui.base.baseComponent import BaseComponent
class TextboxComponent(BaseComponent):
    # type: () -> None
    """
    文本框组件，用于管理文本框的显示和操作。
    Attributes:
        _typeHint (str): 组件类型提示。
        _component (TextEditBoxUIControl): 文本框控件。
        textCache (str): 文本缓存。
        useCache (bool): 使用文本缓存标志。
        callback (func): 文本变化回调函数。
    """
    self._typeHint  = ""
    self._component  = TextEditBoxUIControl()
    self.textCache  = ""
    self.useCache  = False
    self.callback  = None # callable

    def GetEditText(self, useCache=None):
        # type: () -> str
        """
        获取文本框中的文本。
        Args:
            useCache (bool): 是否使用缓存。
        Returns:
            str: 文本框中的文本。
        """
        pass

    def SetEditText(self, text):
        # type: (str) -> None
        """
        设置文本框中的文本。
        Args:
            text (str): 要设置的文本。
        """
        pass

    def SetEditTextMaxLength(self, maxLength):
        # type: (int) -> None
        """
        设置文本框的最大字符数。
        Args:
            maxLength (int): 最大字符数。
        """
        pass

    def registerOnChanged(self, callback):
        # type: (func) -> None
        """
        注册文本变化回调函数。在文本框内容发生变化时会调用此回调函数
        该回调接受两个参数：
            textBox (TextBosComponent)：此输入框控件。可通过调用 textBox.GetEditText()来获取新输入的文本
            previous (str)： 更改前的内容
        Args:
            callback (func): 文本变化回调函数。
        """
        pass

